/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Pesistencia;

import BancoDados.BancoDados;
import Entidade.ProdutoModel;
import Entidade.ProdutoModelVenda;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author Thalyta
 */
public class ProdutoPersistencia {
      BancoDados bd;
      
      
       public ArrayList<ProdutoModel> getListaProdutos() {
        try {
            ResultSet rs = bd.consultar("SELECT * FROM produto");
            ArrayList<ProdutoModel> retorno = new ArrayList<>();
            while(rs.next()){
                ProdutoModel p = new ProdutoModel(rs.getInt("codProduto"), rs.getString("Nome"),rs.getDouble("Valor"),rs.getString("Descricao"));
                retorno.add(p);
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public ProdutoPersistencia(BancoDados bd) {
        this.bd = bd;
    }

    public void cadastrar( ProdutoModel produto) {
        try {
            bd.atualizar("INSERT INTO produto (codProduto,Nome,Valor,Descricao) VALUES ("+produto.getCodigo()+" ,'"+produto.getNome()+"' ,"+produto.getValor()+" ,'"+produto.getDescricao()+"')");

            System.out.println("INSERT INTO produto (codProduto,Nome,Valor,Descricao) VALUES ("+produto.getCodigo()+" ,'"+produto.getNome()+"' ,"+produto.getValor()+" ,'"+produto.getDescricao()+"')");
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }

    public  ProdutoModel buscar(int codigo) 
    {
        try {
            ResultSet rs = bd.consultar("SELECT * FROM produto WHERE codProduto = "+codigo);
            rs.next();
             ProdutoModel retorno;
            if(rs.getRow() == 0){
                retorno = null;
            } else {
                retorno = new ProdutoModel(rs.getInt("codProduto"), rs.getString("Nome"),rs.getDouble("Valor"),rs.getString("Descricao"));
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public  ProdutoModel buscarNome(String nome) 
    {
        try {
            ResultSet rs = bd.consultar("SELECT * FROM produto WHERE nome = "+nome);
            rs.next();
             ProdutoModel retorno;
            if(rs.getRow() == 0){
                retorno = null;
            } else {
                retorno = new ProdutoModel(rs.getInt("codProduto"), rs.getString("Nome"),rs.getDouble("Valor"),rs.getString("Descricao"));
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public  int buscarNome1(String nome) 
    {
        try {
            ResultSet rs = bd.consultar("SELECT codigo FROM produto WHERE nome = "+nome);
            rs.next();
             int retorno;
            if(rs.getRow() == 0){
                retorno = 0;
            } else {
                retorno = rs.getInt("codProduto");
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }

    

    public int recuperarUltimoCodigo() {
        try {
            ResultSet rs = bd.consultar("SELECT MAX(codProduto) FROM produto");
            rs.next();
            int retorno;
            if(rs.getRow() == 0){
                retorno = 0;
            } else {
                retorno = rs.getInt("MAX(codProduto)");
            }
            return retorno;
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }
    }

    public void excluir(ProdutoModel produto) {
        try {
            bd.atualizar("DELETE FROM produto WHERE (codProduto = "+produto.getCodigo()+")");

            System.out.println("DELETE FROM produto WHERE (codProduto = "+produto.getCodigo()+")");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
public void editar(ProdutoModel produto) {
        try {
            
            
            bd.atualizar("UPDATE produto SET nome = "+"'"+ produto.getNome() +"'"+", descricao = "+"'"+produto.getDescricao()+"'"+ ", valor = "+produto.getValor()+ " WHERE (codProduto = "+produto.getCodigo()+")");

            System.out.println("UPDATE produto SET nome = "+"'"+ produto.getNome() +"'"+", descricao = "+"'"+produto.getDescricao()+"'"+ ", valor = "+produto.getValor()+ " WHERE (codProduto = "+produto.getCodigo()+")");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public Iterator<ProdutoModelVenda> iterator() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
